DAL Insert methode
Home

DAL Insert methode

DAL Insert methode

De Insert methode voor de DAL klasse

Probleem

We hebben de id van de nieuw toegevoegde rij nodig.

We willen feedback geven aan de gebruiker over de insert. Er zijn drie toestanden die we in de gaten moeten houden:

  1. database foutmelding
  2. sql foutmelding
  3. insert gelukt

Design

We gebruiken een try catch om feedback te geven op systeemfouten en SQL server fouten. We interpreteren de retourwaarde van de ExecuteNonQuery methode. Als parameter geven we een BLL object mee. In ASP.NET MVC is dat vaak het model. Als de naam van de OrderStatus al bestaat zal er een SQL foutmelding gegenereerd worden.

Oplossing

public int Create()
{
    SqlConnection connection = new SqlConnection();
    connection.ConnectionString = ConfigurationManager.
        ConnectionStrings["WebwinkelWindowsAuthentication"].ToString();
    SqlCommand command = new SqlCommand();
    // in de CommandText eigenschap stoppen de naam
    // van de stored procedure
    string sqlString = "OrderStatusInsert";
    //we use here a getter method to obtain the value to be saved,
    command.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 255)).Value = Model.Name;
    command.Parameters.Add(new SqlParameter("@Description", SqlDbType.NVarChar, 1024)).Value = Model.Description;
    SqlParameter id = new SqlParameter("@Id", SqlDbType.Int);
    id.Direction = ParameterDirection.Output;
    command.Parameters.Add(id);
    // zeg aan het command object dat het een stored procedure
    // zal krijgen en geen SQL Statement
    command.CommandType = CommandType.StoredProcedure;
    // stop het sql statement in het command object
    command.CommandText = sqlString;
    // geeft het connection object door aan het command object
    command.Connection = connection;
    this.message = "Niets te melden";
    // we gaan ervan uit dat het mislukt
    int result = 0;
    using (connection)
    {
        try
        {
            connection.Open();
            //Verbinding geslaagd
            result = command.ExecuteNonQuery();
            // we moeten kijken naar de waarde van out parameter
            // van Insert stored procedure. Als de insert niet lukt
            // retourneert de out parameter van de stored procedure 0
            if (result <= 0)
            {
                this.message = " OrderStatus is niet geïnserted.";
            }
            else
            {
                this.message = " OrderStatus is geïnserted.";
                result = (int)id.Value;
            }
        }
        catch (SqlException e)
        {
            this.message = e.Message;
        }
    }
    return result; // 0 of de Id van de nieuwe rij
}

Kopiëer die methode in de OrderStatus DAL klasse.

JI
2017-01-21 16:25:44